package com.zhouyibike.uu.http;


import com.zhouyibike.uu.entity.AppKeyResult;
import com.zhouyibike.uu.entity.BookingResult;
import com.zhouyibike.uu.entity.BuyBikeListResult;
import com.zhouyibike.uu.entity.BuyBikeResult;
import com.zhouyibike.uu.entity.CheckPromoCodeResult;
import com.zhouyibike.uu.entity.CheckPwdResult;
import com.zhouyibike.uu.entity.ChongZhiListResult;
import com.zhouyibike.uu.entity.CityBikeCompanyOrderListResult;
import com.zhouyibike.uu.entity.CityBikeCompanyStardantInterfaceResult;
import com.zhouyibike.uu.entity.ConsumingYiQuanResult;
import com.zhouyibike.uu.entity.DatanullResult;
import com.zhouyibike.uu.entity.FindBictcleByRangeResult;
import com.zhouyibike.uu.entity.GetBicycleInterfaceResult;
import com.zhouyibike.uu.entity.GetCodeResult;
import com.zhouyibike.uu.entity.GetInformation6Result;
import com.zhouyibike.uu.entity.GetYiTransferResult;
import com.zhouyibike.uu.entity.Hehuorenpic;
import com.zhouyibike.uu.entity.InformationResult;
import com.zhouyibike.uu.entity.JvBaoInfo;
import com.zhouyibike.uu.entity.JvBaoTypeResult;
import com.zhouyibike.uu.entity.KaiSuoResult;
import com.zhouyibike.uu.entity.LocationInfo;
import com.zhouyibike.uu.entity.LoginResult;
import com.zhouyibike.uu.entity.MyBicycleInterfaceResult;
import com.zhouyibike.uu.entity.MyBicycleNumberInterfaceResult;
import com.zhouyibike.uu.entity.MyBikeResult;
import com.zhouyibike.uu.entity.MyJourneyResult;
import com.zhouyibike.uu.entity.MyRidingResult;
import com.zhouyibike.uu.entity.MyYiQuanTransferResult;
import com.zhouyibike.uu.entity.MydetailResult;
import com.zhouyibike.uu.entity.OrderDetailResult;
import com.zhouyibike.uu.entity.OrderUnPayNewResult;
import com.zhouyibike.uu.entity.PaiMingResult;
import com.zhouyibike.uu.entity.PayForRegisterResult;
import com.zhouyibike.uu.entity.PayYiQuanResult;
import com.zhouyibike.uu.entity.PayYiQuanTypeResult;
import com.zhouyibike.uu.entity.ProduceListResult;
import com.zhouyibike.uu.entity.ProductDetailResult;
import com.zhouyibike.uu.entity.ProductPayTypeResult;
import com.zhouyibike.uu.entity.QRCodeForPaymentResult;
import com.zhouyibike.uu.entity.RedBagInstroduceResult;
import com.zhouyibike.uu.entity.SettingResult;
import com.zhouyibike.uu.entity.ShareCodeResult;
import com.zhouyibike.uu.entity.Shoudong;
import com.zhouyibike.uu.entity.ShoudongInfo;
import com.zhouyibike.uu.entity.StartRidingInfo;
import com.zhouyibike.uu.entity.StartRidingResult;
import com.zhouyibike.uu.entity.TransferForDoingResult;
import com.zhouyibike.uu.entity.TwentyActivityResult;
import com.zhouyibike.uu.entity.TwentyBuyResult;
import com.zhouyibike.uu.entity.TwentyGetBicycleResult;
import com.zhouyibike.uu.entity.UnPaidOrderResult;
import com.zhouyibike.uu.entity.UpMSGResult;
import com.zhouyibike.uu.entity.VefityForUpdateResult;
import com.zhouyibike.uu.entity.WeekIncomingResult;
import com.zhouyibike.uu.entity.WithDrawIntroduceResult;
import com.zhouyibike.uu.entity.YCQResult;
import com.zhouyibike.uu.entity.YiBuyBicycleResult;
import com.zhouyibike.uu.entity.YiHuoDongResult;
import com.zhouyibike.uu.entity.YiQuanForTranferAmountResult;
import com.zhouyibike.uu.entity.YuYueInfo;
import com.zhouyibike.uu.entity.YuYueResult;
import com.zhouyibike.uu.entity.ZanResult;
import com.zhouyibike.uu.entity.ZhinanResult;

import java.util.Map;

import retrofit2.http.Body;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;
import rx.Observable;

public interface ApiStores {

    /**
     * 1. 获取对应的appKey
     *
     * @param map
     * @return
     */
    @POST("v1/GetKey")
    Observable<AppKeyResult> getKey(@QueryMap Map<String, String> map);

    /**
     * 2. 获取验证码
     *
     * @param map
     * @return
     */
    @POST("v1/GetVerifyCode")
    Observable<GetCodeResult> getVerifyCode(@QueryMap Map<String, String> map);

    /**
     * App登录/注册
     *
     * @param map
     * @return
     */
    @POST("v1/AppLogin")
    Observable<LoginResult> login(@QueryMap Map<String, String> map);

    /**
     * 5. 重新获取或刷新用户信息
     *
     * @param map
     * @return
     */
    @POST("v1/ReloadAccountInfo")
    Observable<LoginResult> ReloadAccountInfo(@QueryMap Map<String, String> map);

    /**
     * 6. 开户缴费
     *
     * @param map
     * @return
     */
    @POST("v1/PayForRegister")
    Observable<PayForRegisterResult> PayForRegister(@QueryMap Map<String, String> map);

    /**
     * 9. 实名认证
     *
     * @param map
     * @return
     */
    @POST("v1/Approve")
    Observable<GetCodeResult> Approve(@QueryMap Map<String, String> map);

    /**
     * 7. 设置支付密码
     *
     * @param map
     * @return
     */
    @POST("v1/SetPasswrod")
    Observable<GetCodeResult> SetPasswrod(@QueryMap Map<String, String> map);

    /**
     * 36. 获取系统配置
     *
     * @param map
     * @return
     */
    @POST("v1/GetSettings")
    Observable<SettingResult> GetSettings(@QueryMap Map<String, String> map);

    /**
     * 10. 修改昵称
     *
     * @param map
     * @return
     */
    @POST("v1/SaveNickName")
    Observable<GetCodeResult> SaveNickName(@QueryMap Map<String, String> map);

    /**
     * 11. 上传头像
     *
     * @param map
     * @return
     */
    @POST("v1/SaveHeadPicture")
    Observable<GetCodeResult> SaveHeadPicture(@QueryMap Map<String, String> map);

    /**
     * 13. 我的历史行程
     *
     * @param map
     * @return
     */
    @POST("v1/MyJourney")
    Observable<MyJourneyResult> MyJourney(@QueryMap Map<String, String> map);

    /**
     * 26. 搜索当前位置1KM内单车
     *
     * @return
     */
    @POST("v1/FindBictcleByRange")
    Observable<FindBictcleByRangeResult> FindBictcleByRange(@Body LocationInfo lf);

    /**
     * 26. 搜索当前位置1KM内单车
     *
     * @return
     */
    @POST("v1/GetRechargeList")
    Observable<ChongZhiListResult> GetRechargeList(@QueryMap Map<String, String> map);

    /**
     * 34. 充值
     *
     * @return
     */
    @POST("v1/SaveRecharge")
    Observable<PayForRegisterResult> SaveRecharge(@QueryMap Map<String, String> map);

    /**
     * 19. 我的用车券
     *
     * @return
     */
    @POST("v1/GetPackages")
    Observable<YCQResult> GetPackages(@QueryMap Map<String, String> map);

    /**
     * 18. 我的明细/所有订单列表
     *
     * @return
     */
    @POST("v1/GetOrders")
    Observable<MydetailResult> GetOrders(@QueryMap Map<String, String> map);

    /**
     * 20. 邀请分享
     *
     * @return
     */
    @POST("v1/MyShared")
    Observable<ShareCodeResult> MyShared(@QueryMap Map<String, String> map);

    /**
     * 26. 是否有预约
     *
     * @return
     */
    @POST("v1/HasBooking")
    Observable<BookingResult> HasBooking(@QueryMap Map<String, String> map);

    /**
     * 28. 发起预约
     *
     * @return
     */
    @POST("v1/BookingRiding")
    Observable<YuYueResult> BookingRiding(@Body YuYueInfo lf);

    /**
     * 29. 取消预约
     *
     * @return
     */
    @POST("v1/EndBookingRiding")
    Observable<GetCodeResult> EndBookingRiding(@QueryMap Map<String, String> map);

    /**
     * 12. 当前行程
     *
     * @return
     */
    @POST("v1/MyRiding")
    Observable<MyRidingResult> MyRiding(@QueryMap Map<String, String> map);

    /**
     * 30. 开始行程
     *
     * @return
     */
    @POST("v1/StartRiding")
    Observable<StartRidingResult> StartRiding(@Body StartRidingInfo lf);

    /**
     * 27. 是否有未结束行程
     *
     * @return
     */
    @POST("v1/HasRiding")
    Observable<BookingResult> HasRiding(@QueryMap Map<String, String> map);

    /**
     * 38. 获取文字信息
     *
     * @return
     */
    @POST("v1/GetInformation")
    Observable<InformationResult> GetInformation(@QueryMap Map<String, String> map);

    /**
     * 38. 获取文字信息连接 使用指南
     *
     * @return
     */
    @POST("v1/GetInformationUrl")
    Observable<ZhinanResult> GetInformationzn(@QueryMap Map<String, String> map);

    /**
     * 38. 获取文字信息连接 使用指南
     *
     * @return
     */
    @POST("v1/GetInformationUrl")
    Observable<GetCodeResult> GetInformationzcxy(@QueryMap Map<String, String> map);

    /**
     * 21. 获取未完成订单列表
     *
     * @return
     */
    @POST("v1/GetUnpaidOrder")
    Observable<UnPaidOrderResult> GetUnpaidOrder(@QueryMap Map<String, String> map);

    /**
     * 19. 获取未支付订单+详情+支付
     *
     * @return
     */
    @POST("v1/GetUnpaidOrderForPay")
    Observable<OrderUnPayNewResult> GetUnpaidOrderForPay(@QueryMap Map<String, String> map);

    /**
     * 24. 获取订单详情
     *
     * @return
     */
    @POST("v1/GetOrderById")
    Observable<OrderDetailResult> GetOrderById(@QueryMap Map<String, String> map);

    /**
     * 32. 结束行程/支付
     *
     * @return
     */
    @POST("v1/EndRiding")
    Observable<PayForRegisterResult> EndRiding(@QueryMap Map<String, String> map);

    /**
     * 14. 我的单车
     *
     * @return
     */
    @POST("v1/MyBicycle")
    Observable<MyBikeResult> MyBicycle(@QueryMap Map<String, String> map);

    /**
     * 15. 获取认购单车列表
     *
     * @return
     */
    @POST("v1/BuyBicycleList")
    Observable<BuyBikeListResult> BuyBicycleList(@QueryMap Map<String, String> map);

    /**
     * 16.认购单车
     *
     * @return
     */
    @POST("v1/BuyBicycles")
    Observable<BuyBikeResult> BuyBicycles(@QueryMap Map<String, String> map);

    /**
     * 38. 获取报修类型列表
     *
     * @return
     */
    @POST("v1/GetRepairList")
    Observable<JvBaoTypeResult> GetRepairList(@QueryMap Map<String, String> map);

    /**
     * 34. 故障报修
     *
     * @return
     */
    @POST("v1/ReportTrouble")
    Observable<StartRidingResult> ReportTrouble(@Body JvBaoInfo lf);

    @POST("v3/NoteForDangDang")
    Observable<StartRidingResult> NoteForDangDang(@Body JvBaoInfo lf);

    /**
     * 26. 骑行排行
     *
     * @return
     */
    @POST("v1/RankingJourney")
    Observable<PaiMingResult> RankingJourney(@QueryMap Map<String, String> map);

    /**
     * 24. 申请提现
     *
     * @param map
     * @return
     */
    @POST("v1/Withdraw")
    Observable<GetCodeResult> Withdraw(@QueryMap Map<String, String> map);

    /**
     * 27. 转让单车
     *
     * @return
     */
    @POST("v2/TransferBicycle")
    Observable<GetCodeResult> TransferBicycle(@QueryMap Map<String, String> map);

    /**
     * 28. 点赞
     *
     * @return
     */
    @POST("v1/AddPraise")
    Observable<ZanResult> AddPraise(@QueryMap Map<String, String> map);

    /**
     * 34. 获取MAC地址
     *
     * @return
     */
    @POST("v1/GetMac")
    Observable<GetCodeResult> GetMac(@QueryMap Map<String, String> map);

    /**
     * 35. 蓝牙开锁成功
     *
     * @return
     */
    @POST("v1/OpenByBluetooth")
    Observable<KaiSuoResult> OpenByBluetooth(@QueryMap Map<String, String> map);

    /**
     * APP版本
     *
     * @return
     */
    @POST("v2/GetAppVersion")
    Observable<UpMSGResult> GetAppVersion(@QueryMap Map<String, String> map);

    /**
     * /**
     * APP版本
     *
     * @return
     */
    @POST("v2/GetAndroidVersion")
    Observable<UpMSGResult> GetAndroidVersion(@QueryMap Map<String, String> map);

    /**
     * 36.翼活动
     *
     * @return
     */
    @POST("v1/YiHuoDong")
    Observable<YiHuoDongResult> YiHuoDong(@QueryMap Map<String, String> map);
//    GetYiTransfer

    /**
     * 37.翼活动转让记录
     *
     * @return
     */
    @POST("v1/GetYiTransfer")
    Observable<GetYiTransferResult> GetYiTransfer(@QueryMap Map<String, String> map);

    /**
     * 38.翼活动--购买种类
     *
     * @return
     */
    @POST("v1/PayYiQuanType")
    Observable<PayYiQuanTypeResult> PayYiQuanType(@QueryMap Map<String, String> map);

    /**
     * 39.翼活动--购买翼券
     *
     * @return
     */
    @POST("v1/PayYiQuan")
    Observable<PayYiQuanResult> PayYiQuan(@QueryMap Map<String, String> map);

    /**
     * 40.翼活动--转让翼券
     *
     * @return
     */
    @POST("v1/MyYiQuanTransfer")
    Observable<MyYiQuanTransferResult> MyYiQuanTransfer(@QueryMap Map<String, String> map);

    /**
     * 41.我的单车-商品详情
     *
     * @return
     */
    @POST("v1/ProductDetail")
    Observable<ProductDetailResult> ProductDetail(@QueryMap Map<String, String> map);

    /**
     * 42.我的单车--购买方式
     *
     * @return
     */
    @POST("v1/ProductPayType")
    Observable<ProductPayTypeResult> ProductPayType(@QueryMap Map<String, String> map);

    /**
     * 43.我的单车--购买结算
     *
     * @return
     */
    @POST("v1/YiBuyBicycle")
    Observable<YiBuyBicycleResult> YiBuyBicycle(@QueryMap Map<String, String> map);
//    YiBuyBicycle

    /**
     * 44.我的分享,三步骤
     *
     * @return
     */
    @POST("v1/GetInformation")
    Observable<GetInformation6Result> GetInformation6(@QueryMap Map<String, String> map);

    /**
     * 45.我的20认购单车结算
     *
     * @return
     */
    @POST("v2/TwentyBuy")
    Observable<TwentyBuyResult> TwentyBuy(@QueryMap Map<String, String> map);
//    TwentyActivityResult

    /**
     * 46.我的20认购单车详情
     *
     * @return
     */
    @POST("v2/TwentyActivity")
    Observable<TwentyActivityResult> TwentyActivity(@QueryMap Map<String, String> map);

    /**
     * 47.我的20领取单车详情
     *
     * @return
     */
    @POST("v2/GetBicycleInterface")
    Observable<GetBicycleInterfaceResult> GetBicycleInterface(@QueryMap Map<String, String> map);

    /**
     * 48.我的单车详情2
     *
     * @return
     */
    @POST("v2/MyBicycleInterface")
    Observable<MyBicycleInterfaceResult> MyBicycleInterface(@QueryMap Map<String, String> map);

    /**
     * 49.我的单车领取
     *
     * @return
     */
    @POST("v2/TwentyGetBicycle")
    Observable<TwentyGetBicycleResult> TwentyGetBicycle(@QueryMap Map<String, String> map);
//    TwentyGetBicycleResult

    /**
     * 50. 关锁未结算
     *
     * @return
     */
    @POST("v1/ReportCloseTocker")
    Observable<StartRidingResult> ReportCloseTocker(@Body JvBaoInfo lf);

    /**
     * 51. 转让单车
     *
     * @return
     */
    @POST("v1/ApiBackOutBike")
    Observable<GetCodeResult> ApiBackOutBike(@QueryMap Map<String, String> map);

    /**
     * 71. 七日1单车收益
     *
     * @return
     */
    @POST("v2/WeekIncoming")
    Observable<WeekIncomingResult> WeekIncoming(@QueryMap Map<String, String> map);

    /**
     * 71. 我的单车收益2
     *
     * @return
     */
    @POST("v2/WeekIncomingForMyBike")
    Observable<WeekIncomingResult> WeekIncomingForMyBike(@QueryMap Map<String, String> map);

    /**
     * 71. 7日10单车收益3
     *
     * @return
     */
    @POST("v2/WeekIncomingForTenBike")
    Observable<WeekIncomingResult> WeekIncomingForTenBike(@QueryMap Map<String, String> map);

    /**
     * .72 单车界面详情
     *
     * @return
     */
    @POST("v2/MyBicycleNumberInterface")
    Observable<MyBicycleNumberInterfaceResult> MyBicycleNumberInterface(@QueryMap Map<String, String> map);
//    v2/VefityForUpdate

    /**
     * .72 修改提现密码
     *
     * @return
     */
    @POST("v2/ModifyPwdByName")
    Observable<LoginResult> ModifyPwdByName(@QueryMap Map<String, String> map);

    /**
     * .73 验证验证码
     *
     * @return
     */
    @POST("v2/VefityForUpdate")
    Observable<VefityForUpdateResult> VefityForUpdate(@QueryMap Map<String, String> map);
//    v1/CheckPwd

    /**
     * .73 验证提现密码
     *
     * @return
     */
    @POST("v1/CheckPwd")
    Observable<CheckPwdResult> CheckPwd(@QueryMap Map<String, String> map);
//    v2/CheckPromoCode

    /**
     * .75 验证提现密码
     *
     * @return
     */
    @POST("v2/CheckPromoCode")
    Observable<CheckPromoCodeResult> CheckPromoCode(@QueryMap Map<String, String> map);

    /**
     * .我的翼券明细
     *
     * @return
     */
    @POST("v1/MyYiQuanDetail")
    Observable<MydetailResult> MyYiQuanDetail(@QueryMap Map<String, String> map);
//    v1/MyYiQuanDetail
//    v2/CloseLockerForUser

    /**
     * .我的翼券明细
     *
     * @return
     */
    @POST("v2/CloseLockerForUser")
    Observable<Shoudong> CloseLockerForUser(@Body ShoudongInfo lf);

    @POST("v2/TransferForDoing")
    Observable<TransferForDoingResult> TransferForDoing(@QueryMap Map<String, String> map);

    @POST("v2/TransferBikeForFree")
    Observable<YiBuyBicycleResult> TransferBikeForFree(@QueryMap Map<String, String> map);

    //红包车信息
    @POST("v2/RedBagInstroduce")
    Observable<RedBagInstroduceResult> RedBagInstroduce(@QueryMap Map<String, String> map);

    //获取到公钥
    @POST("v2/QRCodeForPayment")
    Observable<QRCodeForPaymentResult> QRCodeForPayment(@QueryMap Map<String, String> map);

    //扫码付款
    @POST("v2/YiQuanForScanning")
    Observable<DatanullResult> YiQuanForScanning(@QueryMap Map<String, String> map);

    //    v2/YiQuanForTranferAmount
//7天翼券交易量
    @POST("v2/YiQuanForTranferAmount")
    Observable<YiQuanForTranferAmountResult> YiQuanForTranferAmount(@QueryMap Map<String, String> map);

    //复投接口
    @POST("v2/WithDrawIntroduce")
    Observable<WithDrawIntroduceResult> WithDrawIntroduce(@QueryMap Map<String, String> map);

    //    /v2/BikeCompanyInterface
//单车合伙人
    @POST("v2/BikeCompanyInterface")
    Observable<Hehuorenpic> BikeCompanyInterface(@QueryMap Map<String, String> map);

    //城市合伙人
    @POST("v2/CityBikeCompanyInterface")
    Observable<Hehuorenpic> CityBikeCompanyInterface(@QueryMap Map<String, String> map);

    //城市合伙人明细
    @POST("v2/CityBikeCompanyStardantInterface")
    Observable<CityBikeCompanyStardantInterfaceResult> CityBikeCompanyStardantInterface(@QueryMap Map<String, String> map);

    //商品
    @POST("v2/ProduceList")
    Observable<ProduceListResult> ProduceList(@QueryMap Map<String, String> map);
//付款
    @POST("v2/ConsumingYiQuan")
    Observable<ConsumingYiQuanResult> ConsumingYiQuan(@QueryMap Map<String, String> map);

//合伙人收入明细
    @POST("v2/CityBikeCompanyOrderList")
    Observable<CityBikeCompanyOrderListResult> CityBikeCompanyOrderList(@QueryMap Map<String, String> map);
    //合伙人提现
    @POST("v2/CityWithDrawIntroduce")
    Observable<WithDrawIntroduceResult> CityWithDrawIntroduce(@QueryMap Map<String, String> map);
}
